//  提供复用逻辑函数(钩子)
import { useIntersectionObserver } from '@vueuse/core'
import { onUnmounted, ref } from 'vue'
import dayjs from 'dayjs'
import { useIntervalFn } from '@vueuse/shared'

/* *
*数据懒加载函数
* @param {element} target -dom对象
*apiFn 函数
*/
export const useLazyData = (apiFn) => {
  // 需要
  // 1. 被观察的对象
  // 2. 不同的API函数
  const target = ref(null)
  const result = ref([])
  const { stop } = useIntersectionObserver(
    target,
    ([{ isIntersecting }], observerElement) => {
      if (isIntersecting) {
        stop()
        // 调用API获取数据
        apiFn().then(data => {
          result.value = data.result
        })
      }
    },
    // 配置选项
    {
      // 只要相交的比例大于0 就触发
      threshold: 0
    }
  )
  // 返回--->数据（dom,后台数据）
  return { target, result }
}
// 倒计时的时间 需要的
/*
*countdown 倒计时藐视
*/
export const usePayTime = () => {
  // 需要 timeText 开启倒计时的函数 传参倒计时多久
  // 倒计时函数
  const time = ref(0)
  const timeText = ref('')
  const { pause, resume } = useIntervalFn(() => {
    time.value--
    // console.log(time.value)
    timeText.value = dayjs.unix(time.value).format('mm分ss秒')
    // console.log(time.value)
    if (time.value <= 0) {
      pause()
    }
  }, 1000, false)
  onUnmounted(() => {
    pause()
  })
  // 开启定时器
  const start = (countdown) => {
    time.value = countdown
    timeText.value = dayjs.unix(time.value).format('mm分ss秒')

    resume()
  }
  return {
    start,
    timeText
  }
}
